package com.pan.hello.redis;


import com.alibaba.fastjson.JSONObject;
import com.pan.common.Cat;
import lombok.extern.slf4j.Slf4j;
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;

import java.util.List;

/**
 *
 * redis的基本操作
 * @author by panstark
 * @description
 * @notice
 * @date 2021/5/8
 */
@Slf4j
public class HelloRedis {

    private volatile static Jedis jedis =null;

    /**
     * 这里就用static块直接初始化了
     */
    static {
        HostAndPort hostAndPort = new HostAndPort("10.138.7.185",34998);
        //连接本地的 Redis 服务
        jedis = new Jedis(hostAndPort);
        // 如果 Redis 服务设置了密码，需要下面这行，没有就不需要
        // jedis.auth("123456");
        jedis.auth("BIPaS#c5Xm5J2023");
        System.out.println("连接成功");
        //查看服务是否运行
        System.out.println("服务正在运行: "+jedis.ping());

    }

    /**
     * 双重校验单例
     * @return
     */
    public static Jedis getConnectWithJedis(){
        if(jedis==null){
            synchronized (HelloRedis.class){
                if(jedis==null){
                    //连接本地的 Redis 服务
                    jedis = new Jedis("192.168.102.212");
                    // 如果 Redis 服务设置了密码，需要下面这行，没有就不需要
                     jedis.auth("Occ2018");
                    System.out.println("连接成功");
                    //查看服务是否运行
                    System.out.println("服务正在运行: "+jedis.ping());
                }
            }
        }
        return jedis;
    }

    public static String redisSetString(String key,String value){

        String result = jedis.set(key, value);
        return result;
    }

    public static String redisGetString(String key){

        String result = jedis.get(key);
        return result;
    }

    public static Long redisSetList(String list,String... value){

        Long result = jedis.lpush(list,value);
        return result;
    }

    public static List<String> redisGetList(String list,Integer start,Integer end){

        List<String> lrange = jedis.lrange(list, start, end);
        return lrange;
    }



    public static void main(String[] args) {

//        String result = redisSetString("stark","goodboy");
//        log.info(result);
//        String stark = redisGetString("stark");
//        log.info(stark);
//        Long listReult = redisSetList("tea", "black", "red", "green");
//        log.info("{}",listReult);
//        List<String> stringList = redisGetList("tea", 0, 3);
//        stringList.stream().forEach(x->{
//            log.info("x:{}",x);
//        });

        Cat cat = new Cat();
        cat.gender="ss";
        cat.name="tomcat";
        String catJson = JSONObject.toJSONString(cat);
        String result = redisSetString("catJson",catJson);
        System.out.println(result);
        String catJson1 = redisGetString("catJson");
        System.out.println(catJson1);

    }

}
